home *** CD-ROM | disk | FTP | other *** search
- /*
- * xrt.cpp - cross-reference table
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include "ln_seq.h"
- #include "xrt.h"
-
- class treenode
- {
- public:
- char *word;
- ln_seq lines;
- xrt left, right;
- treenode(char *w, unsigned n);
- ~treenode();
- };
-
- treenode::treenode(char *w, unsigned n) : lines(n)
- {
- word = strcpy(new char[strlen(w) + 1], w);
- }
-
- treenode::~treenode()
- {
- delete word;
- }
-
- xrt::xrt() : root(0) { }
-
- xrt::~xrt()
- {
- delete root;
- }
-
- void xrt::add(char *w, unsigned n)
- {
- int cond;
-
- if (root == 0)
- root = new treenode(w, n);
- else if ((cond = strcmp(w, root->word)) == 0)
- root->lines.add(n);
- else if (cond < 0)
- root->left.add(w, n);
- else
- root->right.add(w, n);
- }
-
- void xrt::print()
- {
- if (root != 0)
- {
- root->left.print();
- printf("%12s: ", root->word);
- root->lines.print();
- printf("\n");
- root->right.print();
- }
- }
-
-
-